<?php

namespace App\Containers\AppSection\Pledge\Models;

use App\Containers\AppSection\File\Models\File;
use App\Ship\Parents\Models\Model;
use Staudenmeir\EloquentJsonRelations\HasJsonRelationships;
use Staudenmeir\EloquentJsonRelations\Relations\BelongsToJson;

/**
 * Движимое имущество
 *
 * @property int $id Id
 * @property string $name Наименование
 * @property string $brand_model Марка,Модель ТС
 * @property string $year Год изготовления ТС
 * @property string $body Кузов
 * @property string $engine_volume Объем двигателя
 * @property string $engine_type Тип двигателя
 * @property string $chassis Шасси
 * @property string $body_color Цвет кузова
 * @property string $engine_model_number Модель,Номер двигателя
 * @property string $engine_power Мощность двигателя
 * @property string $vin VIN
 * @property string $ts_mfr Изготовитель ТС
 * @property string $pts_date Дата выдачи
 * @property string $pts_series_number Серия,Номер ПТС
 * @property string $pts_issued_by Кем выдан
 * @property string $pts_issued_address Адрес
 * @property string $sts_date Дата выдачи
 * @property string $sts_series_number Серия,Номер СТС
 * @property string $sts_issued_by Кем выдан
 * @property string $gos_number Госномер
 * @property string $address Адрес
 * @property string $other_information Иные сведения
 *
 * @property File[] $documents Документы
 * @property File[] $pts_scans Скан ПТС
 * @property File[] $sts_scans Скан СТС
 * @property File[] $images Фото залога
 *
 */
class Movable extends Model
{
    use HasJsonRelationships;

    public $timestamps = false;
    protected $table = 'pledge_movables';
    protected $casts = [
        'documents' => 'json',
        'pts_scans' => 'json',
        'sts_scans' => 'json',
        'images' => 'json',
        'pts_date' => 'date',
        'sts_date' => 'date',
    ];

    protected $fillable = [
        'name',
        'brand_model',
        'year',
        'body',
        'engine_volume',
        'engine_type',
        'chassis',
        'body_color',
        'engine_model_number',
        'engine_power',
        'vin',
        'ts_mfr',
        'pts_date',
        'pts_series_number',
        'pts_issued_by',
        'pts_issued_address',
        'sts_date',
        'sts_series_number',
        'sts_issued_by',
        'gos_number',
        'address',
        'other_information',
        'documents',
        'pts_scans',
        'sts_scans',
        'images'
    ];

    /**
     * A resource key to be used in the serialized responses.
     */
    protected string $resourceKey = 'Movable';

    /**
     * Документы
     * @return BelongsToJson Files
     */
    public function documents(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'documents');
    }

    /**
     * Скан ПТС
     * @return BelongsToJson Files
     */
    public function pts_scans(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'pts_scans');
    }

    /**
     * Скан СТС
     * @return BelongsToJson Files
     */
    public function sts_scans(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'sts_scans');
    }

    /**
     * Фото залога
     * @return BelongsToJson Files
     */
    public function images(): belongsToJson
    {
        return $this->belongsToJson(File::class, 'images');
    }
}
